Namespace OpenArchive
    Namespace System
        Namespace DB
            Public Interface IArchiveDataProvider
                Sub CreateTables(ByVal Name As String, ByVal ArchiveSettings As ArchiveSettings, ByVal Location As String)

                ' DocTable
                Function GetDocTableEntry(ByVal Archive As Archive, ByVal ID As Long, ByVal Location As String) As Tables.DocTable
                Function GetDocTableEntries(ByVal Archive As Archive, ByVal VolumeID As Long, ByVal Location As String) As Tables.DocTable()
                Function GetDocTableCount(ByVal Archive As Archive, ByVal Location As String) As Long
                Function AddDocTableEntry(ByVal Archive As Archive, ByVal TableEntry As Tables.DocTable, ByVal Location As String) As Long
                Sub UpdateDocTableEntry(ByVal Archive As Archive, ByVal ID As Long, ByVal TableEntry As Tables.DocTable, ByVal Location As String)

                'VolumeTable
                Function GetVolumeTableEntry(ByVal Archive As Archive, ByVal ID As Long, ByVal Location As String) As Tables.VolumeTable
                Function AddVolumeTableEntry(ByVal Archive As Archive, ByVal TableEntry As Tables.VolumeTable, ByVal Location As String) As Long
                Sub UpdateVolumeTableEntry(ByVal Archive As Archive, ByVal ID As Long, ByVal TableEntry As Tables.VolumeTable, ByVal Location As String)

                'Index
                Function AddIndexEntry(ByVal Archive As Archive, ByVal TableEntry As Tables.DocTable, ByVal IndexingObject As Object, ByVal Location As String) As Boolean
                Function GetIndexEntries(ByVal Archive As Archive, ByVal SearchingObject As Object, ByVal Lazy As Boolean, ByVal Location As String) As Object()
                'Function UpdateIndexEntry(ByVal FoundObject As Object) As Tables.DocTable
            End Interface
        End Namespace
    End Namespace
End Namespace

